package net.lab1024.sa.admin.module.business.dataStruct.queue;

public interface Queue<E> {

    /**
     * 向队尾插入值(入队操作)
     * @param value 插入的值
     * @return 插入成功放回true,插入失败返回false
     */
    boolean enqueue(E value);

    /**
     * 从队列头获取值，并移除
     * @return 如果队列非空返回队头值，否则返回null
     */
    E dequeue();

    /**
     * 获取队列头值，不移除
     * @return 如果队列非空返回队头值，否则返回null
     */
    E peek();

    /**
     * 获取队列长度
     * @return 队列长度
     */
    int size();

    /**
     * 判断队列是否为空
     * @return 队列为空返回true,否则返回false
     */
    boolean isEmpty();
}
